package com.settlement.system.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * <p>
 * 标准账单
 * </p>
 *
 * @author huangrensen
 * @since 2023-08-05
 */
@Data
public class SysBillVO {
    private Long id;
    /**
     * 原始账单ID
     */
    private String linkNo;
    /**
     * 对账系统店铺编码
     */
    private String billSystemStoreCode;

    /**
     * 对账系统平台编码
     */
    private String billSystemPlatformCode;
    /**
     * 对账系统平台名称
     */
    private String billSystemPlatformName;

    /**
     * 电商平台店铺编码
     */
    private String commercePlatformStoreCode;

    /**
     * 电商平台店铺名称
     */
    private String commercePlatformStoreName;

    /**
     * 财务系统店铺编码
     */
    private String billSysStore;

    /**
     * 财务系统店铺名称
     */
    private String billSysStoreName;

    /**
     * 电商平台店铺编码
     */
    private String thirdSourceCode;

    /**
     * 电商平台店铺名称
     */
    private String thirdSourceName;

    /**
     * 原始账单ID
     */
    private String sourceBillId;

    /**
     * 结算单类型
     */
    private String settlementType;

    /**
     * 电商平台订单编号
     */
    private String sourceOrderNo;

    /**
     * 统一账单ID
     */
    private String sysBillId;

    /**
     * 汇总ID
     */
    private String summaryId;

    /**
     * 业务日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime businessDate;

    /**
     * 发生方账单金额
     */
    private BigDecimal billAmount = BigDecimal.ZERO;

    /**
     * 对方账单金额
     */
    private BigDecimal otherBillAmount;

    /**
     * 电商平台账单项目
     */
    private String originalBillProject;

    /**
     * 记账项目
     */
    private String billProject;

    /**
     * 一级科目编码
     */
    private String firstCode;

    /**
     * 一级科目名称
     */
    private String firstName;

    /**
     * 末级科目编码
     */
    private String lastCode;

    /**
     * 末级科目名称
     */
    private String lastName;

    /**
     * 对方一级科目编码
     */
    private String otherFirstCode;

    /**
     * 对方一级科目名称
     */
    private String otherFirstName;

    /**
     * 对方末级科目编码
     */
    private String otherLastCode;

    /**
     * 对方末级科目名称
     */
    private String otherLastName;

    /**
     * 辅助项配置
     */
    private Map<String, Map<String, String>> accessory;

    /**
     * 对方辅助项配置
     */
    private Map<String, Map<String, String>> otherAccessory;

    /**
     * 入账主体编码
     */
    private String companyCode;

    /**
     * 会计期间
     */
    private String sysBillDate;

    /**
     * 记账日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime billDate;

    /**
     * 是否分摊
     */
    private String apportionment;

    /**
     * 票前票后
     */
    private String invoice;

    /**
     * 稽核标识
     */
    private String audit;

    /**
     * 是否参与记账
     */
    private String accounting;
    /**
     * 记账状态
     */
    private String status;
    /**
     * 供应商名称
     */
    private String carrier;

    /**
     * 发生方借贷方向
     */
    private String borrowing;

    /**
     * 对方借贷方向
     */
    private String otherBorrowing;

    /**
     * 税额
     */
    private BigDecimal taxAmount;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 修改人ID
     */
    private Long updateBy;

    /**
     * 所属角色
     */
    private String belongRole;

    /**
     * 店铺ID
     */
    private Long storeId;

    /**
     * 账单月份
     */
    private String billMonth;
}
